package logika;

import grafika.Predplatitel;
import grafika.Vydavatel;
import java.util.ArrayList;
import java.util.List;

/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */

/*******************************************************************************
 * Tato třída slouží pro vytvoření příkazu Seber, který má za úkol snírat věci z místností.
 *
 * @author    Tomáš Koválik
 * @version   1.0
 */
public class PrikazSeber implements IPrikaz
{
    //== Datové atributy (statické i instancí)======================================
    private static final String NAZEV ="seber";
    private HerniPlan plan;

    //== Konstruktory a tovární metody =============================================

    /*****************************************************************************
     *  Konstruktor vytvoří příkaz seber.
     *  
     *  @param   plan, vytváří odkaz na třídu HerniPlan.
     */
    public PrikazSeber(HerniPlan plan)
    {
        this.plan = plan;
    }

    //== Nesoukromé metody (instancí i třídy) ======================================
    /**
     * Metoda sebere věc, která je parametrem a přidá jí do batohu...
     */
    public String proved(String... parametry){
        if(parametry.length == 0){
            return "Co ale chci sebrat??Jak se tomu nadava??";
        }
        String jmenoVeci = parametry[0];
        Prostor aktProstor = plan.getAktualniProstor();

        if (aktProstor.obsahujeVec(jmenoVeci)){
            Vec vec = aktProstor.odeberVec(jmenoVeci);
            if (vec.jePrenositelna()){
                Batoh batoh = plan.getBatoh();
                if (batoh.vlozVec(vec)){
                    return "Tak a "+vec.getNazev()+" je v batohu...";
                }
                else {
                    aktProstor.vlozVec(vec);
                    return "Tak to už tam nenarvu...";     
                }
            }
            else {
                aktProstor.vlozVec(vec);
                return "Tak tuhle vec neodnesu!";
            }
        }
        else {
            return "Tak " + aktProstor.getNazev() + " neni to spravny misto, kde tohle hledat!";
        }
    }

    /**
     *  Metoda vrací název příkazu (slovo které používá hráč pro jeho vyvolání)
     *  
     *  @ return nazev prikazu
     */
    @Override
    public String getNazev() {
        return NAZEV;
    }

    
}